查看原文
其他

第一批程序员是怎么样编程的?

CPP开发者 2021-07-20

(点击上方蓝字,快速关注我们)


译文:伯乐在线 - 叙帝利,英文: BBC

如有好的文章投稿,请点击 → 这里查看详情


Joyce Wheeler 是首批使用的 EDSAC 的科学家之一

我们大家都记得自己用过的第一台电脑。Joyce Wheeler 也不例外。但是她的情况略有不同,她是第一批使用电脑的人。

EDSAC 由英国剑桥大学莫里斯·威尔克斯(Maurice Wilkes)和他的团队受冯·诺伊曼的《First Draft of a Report on the EDVAC》的启发,以EDVAC为蓝本,设计和建造 EDSAC,1949年5月6日正式运行,是世界上第一台实际运行的存储程序式电子计算机。所有现代电脑的鼻祖之一。

EDSAC使用了约3000个真空管,排在12个柜架上,占地5×4米,功率消耗12Kw。

EDSAC 使用水银延迟线作存储器,分布在32个槽中,每个槽5英尺长,里面包含32个内存位置,共1024个位置。建造时只实现了一半,512个字,第二组于1952年添加.[3] 1952年增加一个磁带存储,但实际使用中不能良好工作。

输入采用5路的穿孔纸带,使用电子纸带读入机,速度为每秒 6·2/3 个字符,1949年10月改进为每秒16字符,1950年使用光电阅读器,达到50字符每秒。输出使用电传打字机,速度6·2/3 字符每秒,1951年添加一个16字符每秒的纸带打孔机。另外,EDSAC可以外接阴极射线管(CRT),可以用来观察寄存器的值。 (摘自维基百科)

Joyce Wheeler 就是这批科学家之一。当时,她正在著名天文学家 Fred Hoyle 的指导下攻读博士学位。

“我的工作是研究恒星内部的反应,”她说,“我对主序恒星在主序列上能保持多久特别感兴趣。”

“我想知道恒星需要多长时间才会消失。”她解释道。

“使恒星发光的核反应堆的内部原理是一个需要解决的难题,”她说,“描述其能量过程的数学方程非常复杂。”

“对于恒星来说,描述其行为和组成的是一组相当复杂的微分方程。”她补充说。

EDSAC 帮助 Wheeler 博士研究恒星燃烧的过程

手工完成这些计算是不可能的。

“手工计算不可能精确无误,”她说,“错误非常多。”

通过 Maurice Wilkes 发明的机器 EDSAC,可以准确的完成计算,这是 Wheeler 为了获得高级学位要做的。

思考时期

首先,她必须学会编写计算程序。

Wheeler 博士于 1954 年在剑桥大学开始攻读博士学位的时候了解到 EDSAC,这缘于在早期的访问中这台机器曾公开展示过。

因为热衷于自己的研究,她坐下来翻开一本描述如何编程的小册子,通过手册上的练习学会了编程。

像 Joyce Wheeler 一样的研究生只能在晚上使用 EDSAC

The little book was called WWG after its three authors Maurice Wilkes, David Wheeler and Stanley Gill.

那本小册子被称为 WWG,名字取自它的三位作者 Maurice Wilkes、David Wheeler 和 Stanley Gill 的头字母。

在学习编程的过程中,Blackler 结识了 David Wheeler ,因为她的一个程序有助于确保 EDSAC 工作良好。随后他们互相了解,坠入爱河,在 1957 年结婚。

如今 62 年过去了,她在那时是非常重要的人物,因为程序员(尤其女程序员)非常稀有。

也许是因为这种新情况,一门新学科和一台开创性的机器,剑桥的计算机实验室的气氛并不是阳盛阴衰。

“你可能会被当成一个东西(object),有时会让人不舒服,”她说,“但是并没有因此成为一个男生队。”

她说这是振奋人心的时刻,因为这台机器可以帮助她完成工作。她很快就学会了编程,她的数学能力帮助她迅速掌握了语法,她不得不翻译那些“讨厌的方程”。

“但是它和数学一样,”她说,“你知道这是你不应该做太久的事情之一。”

编程的基础是由 EDSAC 的创造者制定的

“我发现我每天的编程工作不能超过一定的时间,”她说,“之后你就不会有太大的进展。”

她说,编程问题的解决方案经常会在她从事一些更平凡的事情时被想出来,比如洗衣服或吃午饭。

“有时候,不要太过执迷于某件事,学会停下来,对于编程也是一样。”

夜间工作

编程结束后,她可以让 EDSAC 做数字运算。作为一个研究生,她不得不在晚上运行她的程序。她一般选择在星期五的晚上。

“那很好,因为第二天没有课。”她说。

作为一个操作员,只要签字并提供操作记录,她就可以单独运行 EDSAC。

“很多时候,它会在夜间崩溃,也许有时你会很幸运可以让它运行一整夜,”她说,“如果它真的崩溃了,那么操作员就需要尝试修复它。”

“他们甚至不让任何清洁工靠近它。”她说。

Wheeler 博士已经用一个程序重新调整了 EDSAC 的两个字节的内存,如果这样做没有用,那么她的工作就要暂停一晚上了。

尽管经常死机,但是关于不同恒星消亡的时间, Wheeler 已经取得了一些成绩。

国家计算机博物馆陈放的 EDSAC 复制品

““我已经得到了关于恒星寿命的一些估值,”她说,“编程带来的好处之一是你可以重复计算,迭代。手工是无法做到这一点的。”

“我们可以在程序中添加样本数字,并且可以很容易地检查它们,”她补充说,“我可以很快地检查机器上的结果,这非常有用。”

在 20 世纪 50 年代,“很快”意味着机器执行一次程序需要 30 分钟。然后将结果打印出来,让研究人员仔细查看他们得到的结果。然后需要重新编程,也许要等好几天的时间才可以在 EDSAC 上运行一个稍作修改的程序。

尽管等待的时间漫长,但可以肯定的是, Wheeler 博士他们都是先行者。

“我们正在做的工作,不能使用任何其他方式。”她说。尽管按照现代的标准来看,EDSAC 很粗糙并且速度很慢,但是她已经看到一个革命悄然来临。

“很显然,有一天,当机器越来越快,许多问题将迎刃而解。”


看完本文有收获?请分享给更多人

关注「程序员的那些事」,读编程职场故事

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存